#ifndef ronin_hpp
#define ronin_hpp

#include "projet.hpp"

using namespace std;





///////////////RONIN///////////////////////

class ronin : public humain {
  int honneur;
public :
  ronin(): humain(), honneur(1) {
    
  }
  ronin(const char * n, float argt, string b) : humain(n,argt, b), honneur(1) {
    
  }

  ronin(const ronin &r) : humain(r), honneur(r.honneur) {}
  
  ronin & operator = (const ronin &r) {
    if(this !=&r) {
      this->~ronin();
      humain *h=this;
      *h=r;
      honneur=r.honneur;
    }
    return *this;
  }

  void action(humain *h){
  
    if (typeid(*h)==typeid(yakuza))
         
      provoquer(*((yakuza *)h));
  }

  void donner(float argt, humain *h) {
    if (typeid(*h)==typeid(commercant)){
      commercant * c=(commercant *)h;
      ostringstream oss;
      oss<<"Tiens "<<c->get_nom()<<" voilà "<<argt<<" euros";
      parler(oss.str());
      c->humain::gagner(argt);
      set_argent(get_argent()-argt);  }
  }

  void provoquer(yakuza &y) 
  {
   
    if(honneur*2>y.get_rep()) {
      set_argent(get_argent()+y.perdre());
      parler("Je t'ai bien eu le Yakuza !");
      honneur++;
    }
    else {
      y.gagner();
      honneur--;
    }  
  }


  int get_honneur() const { return honneur;}
  void set_honneur(int point){honneur+=point;}
  void dire_bonjour() const
  {
    ostringstream oss;
    humain::dire_bonjour();
    oss<<"J'ai "<<honneur<<" d'honneur";
    parler(oss.str());
  }


};

#endif
